Relationships come from this google sheet

source(here::here("code", "update-dag.R"))

dag <- read_csv(here::here("data", "dag.csv"))

dag %>% select(-paper) %>% kablebox()
concept from edge to cites cites_empirical
experience office organization increases capacity NA NA
experience professional networks increases capacity NA NA
power capacity increases level of constituency service NA NA
experience experience in office increases office organization NA NA
experience experience in office increases professional networks NA NA
experience experience in office increases policy expertise NA NA
demand experience in office increases name recognition NA NA
demand capacity increases advertising services NA NA
demand advertising services increases demand NA NA
power bureaucratic responsiveness increases marginal benefit of service work NA NA
power marginal benefit of service work increases directing resources to service NA NA
power directing resources to service increases capacity NA NA
experience policy expertise increases priority for policy work NA NA
power institutional position increases bureaucratic responsiveness NA NA
power institutional position increases power over policy NA NA
power power over policy increases marginal benefit of policy work NA NA
power marginal benefit of policy work increases priority for policy work NA NA
power institutional position increases staff NA NA
power staff increases capacity NA NA
power priority for policy work increases ratio of policy to service NA NA
demand power over policy increases media coverage NA NA
demand media coverage increases name recognition NA NA
demand name recognition increases demand NA NA
demand demand increases level of constituency service NA NA
demand advertising services increases name recognition NA NA

More & less complex pathways

library(netlit)

set.seed(13)

# plot tidy network data
plot_netework <- function(dag){
  d <- review(dag,
              edge_attributes = names(dag) )

n <- ggnetwork(d$graph)

n$name %<>% str_replace_all("([a-z| ]{8}) ", 
                           "\\1\n") %>% str_to_title()



ggplot(n) +
  aes(x = x, y = y, xend = xend, yend = yend,
      label = name ) +
    geom_nodes(size = 15, alpha = .1) +
    geom_edges(aes(#linetype = concept,
                   color = concept), 
               curvature = 0.1, 
               alpha = .8,
               #box.padding = unit(1, "lines"),
             arrow = arrow(length = unit(6, "pt"), type = "closed")) +
  
    geom_nodetext_repel(size = 2.5) +
  theme_blank() + 
  labs(color = "",
       linetype = "") + 
  scale_color_viridis_d(option = "plasma", begin = 0, end = .9, direction = -1) + 
  theme(legend.position="bottom")
}

plot_netework(dag)

drop_node <- function(data, NODE_TO_DROP){
simple <- data %>% mutate(
  from = case_when(
    from == NODE_TO_DROP ~ dag$from[which(dag$to == NODE_TO_DROP)],
    T ~ from
  ),
  to = case_when(
    to == NODE_TO_DROP ~ dag$from[which(dag$to == NODE_TO_DROP)],
    T ~ to
  )
)
return(simple)
}

simple <- drop_node(dag, "directing resources to service") %>%
  drop_node(NODE_TO_DROP = "marginal benefit of policy work") %>% 
  drop_node("bureaucratic responsiveness") %>% 
  drop_node("media coverage") %>% 
  drop_node("policy expertise")

set.seed(7)

#  plot_netework(simple)


# now dropping core mechanisms that don't confound
simpler <- drop_node(simple, "office organization") %>%
  drop_node("professional networks") %>% 
  drop_node("marginal benefit of service work") %>% 
  drop_node("ratio of policy to service") %>% 
drop_node("bureaucratic responsiveness") %>% 
  drop_node("staff")

set.seed(2)
plot_netework(simpler)

simpler %>% 
    filter(!str_detect(to, "advert|name"),
           !str_detect(from, "advert|name") ) %>%
    # drop_node("power") %>%
  plot_netework()

simpler %>% 
    filter(!str_detect(to, "demand|advert|name"),
           !str_detect(from, "demand|advert|name") ) %>%
  plot_netework()

Level Model

priority_vars <- "priority|ratio|policy "

level_only <- . %>% 
  filter(! str_detect(to, priority_vars))


set.seed(30)

dag %>% 
  level_only() %>%
  drop_node("power over policy") %>% 
  plot_netework()

# simple %>% 
#   level_only() %>%
#   drop_node("power over policy") %>% 
#   plot_netework()

#set.seed(49)

set.seed(55)


simpler %>% 
  level_only() %>%
  drop_node("power over policy") %>% 
  plot_netework()

Ratio Model

level_vars <- "level|responsiveness|service |resources to service|capacity|demand|advertising|professional|name|organization|media|staff"

priority_only <- . %>% 
  filter(! str_detect(to, level_vars))

dag %>% 
  priority_only() %>%
  #drop_node("power over policy") %>% 
  plot_netework()+ scale_color_viridis_d(option = "plasma", begin = 0, end = .5, direction = -1)

# simple %>% 
#   priority_only() %>%
#   #drop_node("power over policy") %>% 
#   plot_netework()+ scale_color_viridis_d(option = "plasma", begin = 0, end = .5, direction = -1)

simpler %>% 
  priority_only() %>%
  #drop_node("power over policy") %>% 
  plot_netework()+ scale_color_viridis_d(option = "plasma", begin = 0, end = .5, direction = -1)